home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagn_r.zip / POINTERS.SWG / 0019_Linked List Routine.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-24  |  1KB  |  77 lines

  1. type
  2.   PDataRec = ^TDataRec;
  3.   TDataRec = record
  4.     Name: String;
  5.     Next: PDataRec;
  6.   end;
  7.  
  8. const
  9.   DataRecList: PDataRec = nil;
  10.   CurRec :PDataRec = nil;
  11.  
  12. procedure AddRec(AName: String);
  13. var Temp: PDataRec;
  14. begin
  15.   New(CurRec);
  16.   CurRec^.Name := AName;
  17.   CurRec^.Next := nil;
  18.   Temp := DataRecList;
  19.   if Temp = nil then
  20.     DataRecList := CurRec
  21.   else
  22.     begin
  23.       while Temp^.Next <> nil do Temp := Temp^.Next;
  24.       Temp^.Next := CurRec;
  25.     end;
  26. end;
  27.  
  28. procedure PrevRec;
  29. var Temp: PDataRec;
  30. begin
  31.   Temp := DataRecList;
  32.   if Temp <> CurRec then
  33.     while Temp^.Next <> CurRec do Temp := Temp^.Next;
  34.   CurRec := Temp;
  35. end;
  36.  
  37. procedure NextRec;
  38. begin
  39.   if CurRec^.Next <> nil then CurRec := CurRec^.Next;
  40. end;
  41.  
  42. procedure List;
  43. var Temp: PDataRec;
  44. begin
  45.   Temp := DataRecList;
  46.   while Temp <> nil do
  47.     begin
  48.       Write(Temp^.Name);
  49.       if Temp = CurRec then
  50.         Writeln(' <<Current Record>>')
  51.       else
  52.         Writeln;
  53.       Temp := Temp^.Next;
  54.     end;
  55. end;
  56.  
  57. begin
  58.   AddRec('Tom');  AddRec('Dick'); AddRec('Harry');  AddRec('Fred');
  59.   Writeln('Original List');
  60.   List;
  61.   Writeln;
  62.   Readln;
  63.  
  64.   PrevRec; PrevRec;
  65.   Writeln('After Two PrevRec Calls');
  66.   List;
  67.   Writeln;
  68.   Readln;
  69.  
  70.   NextRec;
  71.   Writeln('After One NextRec Call');
  72.   List;
  73.   Writeln;
  74.   Readln;
  75.  
  76.   Writeln('End of Program.');
  77. end.